package com.bishe.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bishe.entity.Club;
import com.bishe.entity.response.R;
import com.bishe.service.ClubService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * (Club)表控制层
 *
 * @author makejava
 * @since 2024-03-07 14:47:04
 */
@RestController
@Api(tags = "社团信息")
@RequestMapping("club")
public class ClubController {
    /**
     * 服务对象
     */
    @Resource
    private ClubService clubService;

    @GetMapping("getPopNum/{id}")
    @ApiOperation("社团人数统计")
    public R getPopNum(@PathVariable String id){
        clubService.getPopNum(id);
        return R.ok(clubService.getPopNum(id));

    }


    @PostMapping("joinClub")
    @ApiOperation("加入社团")
    public R joinClub(@RequestBody Map<String,String> map){
        clubService.joinClub(map);
        return R.ok();
    }

    /**
     * 分页查询所有数据
     *
     * @param page 分页对象
     * @param club 查询实体
     * @return 所有数据
     */
    @GetMapping
    public R selectAll(Page<Club> page, Club club) {
        return R.ok(this.clubService.page(page, new QueryWrapper<>(club)));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public R selectOne(@PathVariable Serializable id) {
        return R.ok(this.clubService.getById(id));
    }

    /**
     * 新增数据
     *
     * @param club 实体对象
     * @return 新增结果
     */
    @PostMapping
    public R insert(@RequestBody Club club) {
        return R.ok(this.clubService.save(club));
    }

    /**
     * 修改数据
     *
     * @param club 实体对象
     * @return 修改结果
     */
    @PutMapping
    public R update(@RequestBody Club club) {
        return R.ok(this.clubService.updateById(club));
    }

    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @return 删除结果
     */
    @DeleteMapping
    public R delete(@RequestParam("idList") List<Long> idList) {
        return R.ok(this.clubService.removeByIds(idList));
    }
}

